/*
 * Copyright (c) 2022 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import { Arg } from './arg';
import { Code } from './code';
import { FrequentedBlock } from './frequented_block';
import { Reg } from './reg';
import {
  aboveOrEqual,
  below,
  belowOrEqual,
  doubleGreaterThanOrEqual,
  equal,
  FP,
  GP,
  greaterThan,
  greaterThanOrEqual,
  locked,
  nonZero,
  normal,
  notEqual,
  overflow,
  spill
} from './symbols';
import {
  Inst,
  InstDateModel,
  add32,
  add64,
  addDouble,
  and32,
  branch32,
  branch64,
  branchDouble,
  branchTest32,
  branchTest64,
  convertInt32ToDouble,
  jump,
  load8,
  move,
  move32,
  move64ToDouble,
  moveConditionallyTest64,
  moveDoubleTo64,
  oops,
  or32,
  patch,
  ret64,
  rshift32,
  store8,
  zeroExtend16To32
} from './inst';

const GBEMU_LOWVALUE_KIND_ONE: number = 286904960;
const GBEMU_LOWVALUE_KIND_TWO: number = 286506544;
const GBEMU_LOWVALUE_KIND_THREE: number = 286455168;
const GBEMU_LOWVALUE_KIND_FOUR: number = 287131344;
const GBEMU_LOWVALUE_KIND_FIVE: number = 286474592;
const GBEMU_LOWVALUE_KIND_SIX: number = 287209728;
const GBEMU_LOWVALUE_KIND_SEVEN: number = 287112728;
const GBEMU_LOWVALUE_KIND_EIGHT: number = 287112720;
const GBEMU_LOWVALUE_KIND_NINE: number = 286506192;

const GBEMU_ARG_VALUE_4: number = 4;
const GBEMU_ARG_VALUE_5: number = 5;
const GBEMU_ARG_VALUE_7: number = 7;
const GBEMU_ARG_VALUE_10: number = 10;
const GBEMU_ARG_VALUE_21: number = 21;
const GBEMU_ARG_VALUE_23: number = 23;
const GBEMU_ARG_VALUE_24: number = 24;
const GBEMU_ARG_VALUE_31: number = 31;
const GBEMU_ARG_VALUE_80: number = 80;
const GBEMU_ARG_VALUE_136: number = 136;
const GBEMU_ARG_VALUE_216: number = 216;
const GBEMU_ARG_VALUE_224: number = 224;
const GBEMU_ARG_VALUE_232: number = 232;
const GBEMU_ARG_VALUE_240: number = 240;
const GBEMU_ARG_VALUE_248: number = 248;
const GBEMU_ARG_VALUE_256: number = 256;
const GBEMU_ARG_VALUE_272: number = 272;
const GBEMU_ARG_VALUE_280: number = 280;
const GBEMU_ARG_VALUE_304: number = 304;
const GBEMU_ARG_VALUE_336: number = 336;
const GBEMU_ARG_VALUE_344: number = 344;
const GBEMU_ARG_VALUE_456: number = 456;
const GBEMU_ARG_VALUE_502: number = 502;
const GBEMU_ARG_VALUE_862: number = 862;
const GBEMU_ARG_VALUE_881: number = 881;

const GBEMU_ARG_VALUE_UN_88: number = -88;
const GBEMU_ARG_VALUE_UN_1096: number = -1096;
const GBEMU_ARG_VALUE_UN_1080: number = -1080;
const GBEMU_ARG_VALUE_UN_1072: number = -1072;
const GBEMU_ARG_VALUE_UN_1048: number = -1048;
const GBEMU_ARG_VALUE_UN_1088: number = -1088;
const GBEMU_ARG_VALUE_UN_1104: number = -1104;
const GBEMU_ARG_VALUE_UN_1112: number = -1112;
const GBEMU_ARG_VALUE_UN_1120: number = -1120;
const GBEMU_ARG_VALUE_UN_1144: number = -1144;
const GBEMU_ARG_VALUE_UN_1176: number = -1176;
const GBEMU_ARG_VALUE_UN_1752: number = -1752;
const GBEMU_ARG_VALUE_UN_1824: number = -1824;
const GBEMU_ARG_VALUE_UN_1832: number = -1832;

const GBEMU_BETYSIZE_NUM_2: number = 2;
const GBEMU_BETYSIZE_NUM_8: number = 8;
const GBEMU_BETYSIZE_NUM_UN_8: number = -8;
const GBEMU_BETYSIZE_NUM_16: number = 16;
const GBEMU_BETYSIZE_NUM_32: number = 32;
const GBEMU_BETYSIZE_NUM_40: number = 40;
const GBEMU_BETYSIZE_NUM_UN_40: number = -40;
const GBEMU_BETYSIZE_NUM_64: number = 64;
const GBEMU_BETYSIZE_NUM_128: number = 128;

const GBEMU_ONE_OF_HEIGHT_VALUE: number = 65536;
const GBEMU_ONE_OF_HEIGHT_VALUE_UN: number = -65536;
const GBEMU_ONE_OF_VALUE: number = 65285;
const GBEMU_ONE_OF_VALUE_65286: number = 65286;

// Generated by Air::dumpAsJS from executeIteration#EVx8pJ in Octane/gbemu
export function createPayloadGbemuExecuteIteration(): Code {
  let code = new Code();
  let bb0 = code.addBasicBlock();
  let bb1 = code.addBasicBlock();
  let bb2 = code.addBasicBlock();
  let bb3 = code.addBasicBlock();
  let bb4 = code.addBasicBlock();
  let bb5 = code.addBasicBlock();
  let bb6 = code.addBasicBlock();
  let bb7 = code.addBasicBlock();
  let bb8 = code.addBasicBlock();
  let bb9 = code.addBasicBlock();
  let bb10 = code.addBasicBlock();
  let bb11 = code.addBasicBlock();
  let bb12 = code.addBasicBlock();
  let bb13 = code.addBasicBlock();
  let bb14 = code.addBasicBlock();
  let bb15 = code.addBasicBlock();
  let bb16 = code.addBasicBlock();
  let bb17 = code.addBasicBlock();
  let bb18 = code.addBasicBlock();
  let bb19 = code.addBasicBlock();
  let bb20 = code.addBasicBlock();
  let bb21 = code.addBasicBlock();
  let bb22 = code.addBasicBlock();
  let bb23 = code.addBasicBlock();
  let bb24 = code.addBasicBlock();
  let bb25 = code.addBasicBlock();
  let bb26 = code.addBasicBlock();
  let bb27 = code.addBasicBlock();
  let bb28 = code.addBasicBlock();
  let bb29 = code.addBasicBlock();
  let bb30 = code.addBasicBlock();
  let bb31 = code.addBasicBlock();
  let bb32 = code.addBasicBlock();
  let bb33 = code.addBasicBlock();
  let bb34 = code.addBasicBlock();
  let bb35 = code.addBasicBlock();
  let bb36 = code.addBasicBlock();
  let bb37 = code.addBasicBlock();
  let bb38 = code.addBasicBlock();
  let bb39 = code.addBasicBlock();
  let bb40 = code.addBasicBlock();
  let bb41 = code.addBasicBlock();
  let bb42 = code.addBasicBlock();
  let slot0 = code.addStackSlot(GBEMU_BETYSIZE_NUM_64, locked);
  let slot1 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot2 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot3 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot4 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot5 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot6 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot7 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot8 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot9 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot10 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot11 = code.addStackSlot(GBEMU_BETYSIZE_NUM_8, spill);
  let slot12 = code.addStackSlot(GBEMU_BETYSIZE_NUM_40, locked);
  slot12.setOffsetFromFP(GBEMU_BETYSIZE_NUM_UN_40);
  let tmp190 = code.newCodeTmp(GP);
  let tmp189 = code.newCodeTmp(GP);
  let tmp188 = code.newCodeTmp(GP);
  let tmp187 = code.newCodeTmp(GP);
  let tmp186 = code.newCodeTmp(GP);
  let tmp185 = code.newCodeTmp(GP);
  let tmp184 = code.newCodeTmp(GP);
  let tmp183 = code.newCodeTmp(GP);
  let tmp182 = code.newCodeTmp(GP);
  let tmp181 = code.newCodeTmp(GP);
  let tmp180 = code.newCodeTmp(GP);
  let tmp179 = code.newCodeTmp(GP);
  let tmp178 = code.newCodeTmp(GP);
  let tmp177 = code.newCodeTmp(GP);
  let tmp176 = code.newCodeTmp(GP);
  let tmp175 = code.newCodeTmp(GP);
  let tmp174 = code.newCodeTmp(GP);
  let tmp173 = code.newCodeTmp(GP);
  let tmp172 = code.newCodeTmp(GP);
  let tmp171 = code.newCodeTmp(GP);
  let tmp170 = code.newCodeTmp(GP);
  let tmp169 = code.newCodeTmp(GP);
  let tmp168 = code.newCodeTmp(GP);
  let tmp167 = code.newCodeTmp(GP);
  let tmp166 = code.newCodeTmp(GP);
  let tmp165 = code.newCodeTmp(GP);
  let tmp164 = code.newCodeTmp(GP);
  let tmp163 = code.newCodeTmp(GP);
  let tmp162 = code.newCodeTmp(GP);
  let tmp161 = code.newCodeTmp(GP);
  let tmp160 = code.newCodeTmp(GP);
  let tmp159 = code.newCodeTmp(GP);
  let tmp158 = code.newCodeTmp(GP);
  let tmp157 = code.newCodeTmp(GP);
  let tmp156 = code.newCodeTmp(GP);
  let tmp155 = code.newCodeTmp(GP);
  let tmp154 = code.newCodeTmp(GP);
  let tmp153 = code.newCodeTmp(GP);
  let tmp152 = code.newCodeTmp(GP);
  let tmp151 = code.newCodeTmp(GP);
  let tmp150 = code.newCodeTmp(GP);
  let tmp149 = code.newCodeTmp(GP);
  let tmp148 = code.newCodeTmp(GP);
  let tmp147 = code.newCodeTmp(GP);
  let tmp146 = code.newCodeTmp(GP);
  let tmp145 = code.newCodeTmp(GP);
  let tmp144 = code.newCodeTmp(GP);
  let tmp143 = code.newCodeTmp(GP);
  let tmp142 = code.newCodeTmp(GP);
  let tmp141 = code.newCodeTmp(GP);
  let tmp140 = code.newCodeTmp(GP);
  let tmp139 = code.newCodeTmp(GP);
  let tmp138 = code.newCodeTmp(GP);
  let tmp137 = code.newCodeTmp(GP);
  let tmp136 = code.newCodeTmp(GP);
  let tmp135 = code.newCodeTmp(GP);
  let tmp134 = code.newCodeTmp(GP);
  let tmp133 = code.newCodeTmp(GP);
  let tmp132 = code.newCodeTmp(GP);
  let tmp131 = code.newCodeTmp(GP);
  let tmp130 = code.newCodeTmp(GP);
  let tmp129 = code.newCodeTmp(GP);
  let tmp128 = code.newCodeTmp(GP);
  let tmp127 = code.newCodeTmp(GP);
  let tmp126 = code.newCodeTmp(GP);
  let tmp125 = code.newCodeTmp(GP);
  let tmp124 = code.newCodeTmp(GP);
  let tmp123 = code.newCodeTmp(GP);
  let tmp122 = code.newCodeTmp(GP);
  let tmp121 = code.newCodeTmp(GP);
  let tmp120 = code.newCodeTmp(GP);
  let tmp119 = code.newCodeTmp(GP);
  let tmp118 = code.newCodeTmp(GP);
  let tmp117 = code.newCodeTmp(GP);
  let tmp116 = code.newCodeTmp(GP);
  let tmp115 = code.newCodeTmp(GP);
  let tmp114 = code.newCodeTmp(GP);
  let tmp113 = code.newCodeTmp(GP);
  let tmp112 = code.newCodeTmp(GP);
  let tmp111 = code.newCodeTmp(GP);
  let tmp110 = code.newCodeTmp(GP);
  let tmp109 = code.newCodeTmp(GP);
  let tmp108 = code.newCodeTmp(GP);
  let tmp107 = code.newCodeTmp(GP);
  let tmp106 = code.newCodeTmp(GP);
  let tmp105 = code.newCodeTmp(GP);
  let tmp104 = code.newCodeTmp(GP);
  let tmp103 = code.newCodeTmp(GP);
  let tmp102 = code.newCodeTmp(GP);
  let tmp101 = code.newCodeTmp(GP);
  let tmp100 = code.newCodeTmp(GP);
  let tmp99 = code.newCodeTmp(GP);
  let tmp98 = code.newCodeTmp(GP);
  let tmp97 = code.newCodeTmp(GP);
  let tmp96 = code.newCodeTmp(GP);
  let tmp95 = code.newCodeTmp(GP);
  let tmp94 = code.newCodeTmp(GP);
  let tmp93 = code.newCodeTmp(GP);
  let tmp92 = code.newCodeTmp(GP);
  let tmp91 = code.newCodeTmp(GP);
  let tmp90 = code.newCodeTmp(GP);
  let tmp89 = code.newCodeTmp(GP);
  let tmp88 = code.newCodeTmp(GP);
  let tmp87 = code.newCodeTmp(GP);
  let tmp86 = code.newCodeTmp(GP);
  let tmp85 = code.newCodeTmp(GP);
  let tmp84 = code.newCodeTmp(GP);
  let tmp83 = code.newCodeTmp(GP);
  let tmp82 = code.newCodeTmp(GP);
  let tmp81 = code.newCodeTmp(GP);
  let tmp80 = code.newCodeTmp(GP);
  let tmp79 = code.newCodeTmp(GP);
  let tmp78 = code.newCodeTmp(GP);
  let tmp77 = code.newCodeTmp(GP);
  let tmp76 = code.newCodeTmp(GP);
  let tmp75 = code.newCodeTmp(GP);
  let tmp74 = code.newCodeTmp(GP);
  let tmp73 = code.newCodeTmp(GP);
  let tmp72 = code.newCodeTmp(GP);
  let tmp71 = code.newCodeTmp(GP);
  let tmp70 = code.newCodeTmp(GP);
  let tmp69 = code.newCodeTmp(GP);
  let tmp68 = code.newCodeTmp(GP);
  let tmp67 = code.newCodeTmp(GP);
  let tmp66 = code.newCodeTmp(GP);
  let tmp65 = code.newCodeTmp(GP);
  let tmp64 = code.newCodeTmp(GP);
  let tmp63 = code.newCodeTmp(GP);
  let tmp62 = code.newCodeTmp(GP);
  let tmp61 = code.newCodeTmp(GP);
  let tmp60 = code.newCodeTmp(GP);
  let tmp59 = code.newCodeTmp(GP);
  let tmp58 = code.newCodeTmp(GP);
  let tmp57 = code.newCodeTmp(GP);
  let tmp56 = code.newCodeTmp(GP);
  let tmp55 = code.newCodeTmp(GP);
  let tmp54 = code.newCodeTmp(GP);
  let tmp53 = code.newCodeTmp(GP);
  let tmp52 = code.newCodeTmp(GP);
  let tmp51 = code.newCodeTmp(GP);
  let tmp50 = code.newCodeTmp(GP);
  let tmp49 = code.newCodeTmp(GP);
  let tmp48 = code.newCodeTmp(GP);
  let tmp47 = code.newCodeTmp(GP);
  let tmp46 = code.newCodeTmp(GP);
  let tmp45 = code.newCodeTmp(GP);
  let tmp44 = code.newCodeTmp(GP);
  let tmp43 = code.newCodeTmp(GP);
  let tmp42 = code.newCodeTmp(GP);
  let tmp41 = code.newCodeTmp(GP);
  let tmp40 = code.newCodeTmp(GP);
  let tmp39 = code.newCodeTmp(GP);
  let tmp38 = code.newCodeTmp(GP);
  let tmp37 = code.newCodeTmp(GP);
  let tmp36 = code.newCodeTmp(GP);
  let tmp35 = code.newCodeTmp(GP);
  let tmp34 = code.newCodeTmp(GP);
  let tmp33 = code.newCodeTmp(GP);
  let tmp32 = code.newCodeTmp(GP);
  let tmp31 = code.newCodeTmp(GP);
  let tmp30 = code.newCodeTmp(GP);
  let tmp29 = code.newCodeTmp(GP);
  let tmp28 = code.newCodeTmp(GP);
  let tmp27 = code.newCodeTmp(GP);
  let tmp26 = code.newCodeTmp(GP);
  let tmp25 = code.newCodeTmp(GP);
  let tmp24 = code.newCodeTmp(GP);
  let tmp23 = code.newCodeTmp(GP);
  let tmp22 = code.newCodeTmp(GP);
  let tmp21 = code.newCodeTmp(GP);
  let tmp20 = code.newCodeTmp(GP);
  let tmp19 = code.newCodeTmp(GP);
  let tmp18 = code.newCodeTmp(GP);
  let tmp17 = code.newCodeTmp(GP);
  let tmp16 = code.newCodeTmp(GP);
  let tmp15 = code.newCodeTmp(GP);
  let tmp14 = code.newCodeTmp(GP);
  let tmp13 = code.newCodeTmp(GP);
  let tmp12 = code.newCodeTmp(GP);
  let tmp11 = code.newCodeTmp(GP);
  let tmp10 = code.newCodeTmp(GP);
  let tmp9 = code.newCodeTmp(GP);
  let tmp8 = code.newCodeTmp(GP);
  let tmp7 = code.newCodeTmp(GP);
  let tmp6 = code.newCodeTmp(GP);
  let tmp5 = code.newCodeTmp(GP);
  let tmp4 = code.newCodeTmp(GP);
  let tmp3 = code.newCodeTmp(GP);
  let tmp2 = code.newCodeTmp(GP);
  let tmp1 = code.newCodeTmp(GP);
  let tmp0 = code.newCodeTmp(GP);
  let ftmp7 = code.newCodeTmp(FP);
  let ftmp6 = code.newCodeTmp(FP);
  let ftmp5 = code.newCodeTmp(FP);
  let ftmp4 = code.newCodeTmp(FP);
  let ftmp3 = code.newCodeTmp(FP);
  let ftmp2 = code.newCodeTmp(FP);
  let ftmp1 = code.newCodeTmp(FP);
  let ftmp0 = code.newCodeTmp(FP);
  let instObject: Inst;
  let argObject: Arg;
  bb0.successors.push(new FrequentedBlock(bb2, normal));
  bb0.successors.push(new FrequentedBlock(bb1, normal));
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_ONE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbp, GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbp);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.scratch, GP, GBEMU_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbp, GBEMU_BETYSIZE_NUM_40);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_BETYSIZE_NUM_2, GBEMU_ONE_OF_HEIGHT_VALUE_UN);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_21);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb0.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createAddr(Reg.rbx, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_TWO, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot10, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_THREE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot4, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FOUR, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot6, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot3, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FIVE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot2, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_SIX, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot11, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot1, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(0, GBEMU_ONE_OF_HEIGHT_VALUE_UN);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_SEVEN, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot8, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(0, GBEMU_ONE_OF_HEIGHT_VALUE);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot9, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_EIGHT, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot5, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_NINE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot7, 0);
  instObject.args.push(argObject);
  bb0.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_862);
  instObject.args.push(argObject);
  bb0.append(instObject);
  bb1.successors.push(new FrequentedBlock(bb41, normal));
  bb1.successors.push(new FrequentedBlock(bb3, normal));
  bb1.predecessors.push(bb0);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_881);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb1.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_224);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb1.append(instObject);
  instObject = new Inst(branchTest32);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb1.append(instObject);
  bb2.successors.push(new FrequentedBlock(bb41, normal));
  bb2.successors.push(new FrequentedBlock(bb3, normal));
  bb2.predecessors.push(bb0);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_224);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb2.append(instObject);
  instObject = new Inst(branchTest32);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb2.append(instObject);
  bb3.successors.push(new FrequentedBlock(bb5, normal));
  bb3.successors.push(new FrequentedBlock(bb4, normal));
  bb3.predecessors.push(bb1);
  bb3.predecessors.push(bb40);
  bb3.predecessors.push(bb39);
  bb3.predecessors.push(bb2);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb3.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1144);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb3.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  bb3.append(instObject);
  bb4.successors.push(new FrequentedBlock(bb6, normal));
  bb4.successors.push(new FrequentedBlock(bb7, normal));
  bb4.predecessors.push(bb3);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  bb4.append(instObject);
  bb5.successors.push(new FrequentedBlock(bb6, normal));
  bb5.predecessors.push(bb3);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_7);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_232);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_256);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_248);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(and32);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(and32);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_31);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_240);
  instObject.args.push(argObject);
  bb5.append(instObject);
  instObject = new Inst(jump);
  bb5.append(instObject);
  bb6.successors.push(new FrequentedBlock(bb7, normal));
  bb6.predecessors.push(bb4);
  bb6.predecessors.push(bb5);
  instObject = new Inst(add32);
  argObject = Arg.createImm(-1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb6.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb6.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1144);
  instObject.args.push(argObject);
  bb6.append(instObject);
  instObject = new Inst(jump);
  bb6.append(instObject);
  bb7.successors.push(new FrequentedBlock(bb8, normal));
  bb7.successors.push(new FrequentedBlock(bb9, normal));
  bb7.predecessors.push(bb4);
  bb7.predecessors.push(bb6);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_240);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb7.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThan);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(0);
  instObject.args.push(argObject);
  bb7.append(instObject);
  bb8.successors.push(new FrequentedBlock(bb9, normal));
  bb8.predecessors.push(bb7);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_THREE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb8.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_THREE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb8.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb8.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb8.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  bb8.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  bb8.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb8.append(instObject);
  instObject = new Inst(jump);
  bb8.append(instObject);
  bb9.successors.push(new FrequentedBlock(bb12, normal));
  bb9.successors.push(new FrequentedBlock(bb10, normal));
  bb9.predecessors.push(bb7);
  bb9.predecessors.push(bb8);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_304);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_128);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.r8, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_80);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb9.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.r8, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(aboveOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, GBEMU_BETYSIZE_NUM_UN_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb9.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createIndex(Reg.rax, Reg.rsi, GBEMU_BETYSIZE_NUM_8, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(moveConditionallyTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(-1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb9.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rcx, GBEMU_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_23);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb9.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rcx, GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb9.append(instObject);
  instObject = new Inst(branch64);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot7, 0);
  instObject.args.push(argObject);
  bb9.append(instObject);
  bb10.successors.push(new FrequentedBlock(bb11, normal));
  bb10.successors.push(new FrequentedBlock(bb13, normal));
  bb10.predecessors.push(bb9);
  instObject = new Inst(branch64);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot10, 0);
  instObject.args.push(argObject);
  bb10.append(instObject);
  bb11.successors.push(new FrequentedBlock(bb14, normal));
  bb11.predecessors.push(bb10);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, 0);
  instObject.args.push(argObject);
  bb11.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_344);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  bb11.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdi, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_502);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb11.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb11.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(aboveOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb11.append(instObject);
  instObject = new Inst(load8);
  argObject = Arg.createIndex(Reg.rsi, Reg.rax, 1, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb11.append(instObject);
  instObject = new Inst(jump);
  bb11.append(instObject);
  bb12.successors.push(new FrequentedBlock(bb14, normal));
  bb12.predecessors.push(bb9);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createStack(slot0, 0);
  instObject.args.push(argObject);
  bb12.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_336);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  bb12.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_456);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb12.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.zDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb12.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdi, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_502);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb12.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb12.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(aboveOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb12.append(instObject);
  instObject = new Inst(load8);
  argObject = Arg.createIndex(Reg.rsi, Reg.rax, 1, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb12.append(instObject);
  instObject = new Inst(jump);
  bb12.append(instObject);
  bb13.predecessors.push(bb10);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb13.append(instObject);
  instObject = new Inst(oops);
  bb13.append(instObject);
  bb14.successors.push(new FrequentedBlock(bb15, normal));
  bb14.successors.push(new FrequentedBlock(bb16, normal));
  bb14.predecessors.push(bb11);
  bb14.predecessors.push(bb12);
  instObject = new Inst(add32);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(zeroExtend16To32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_128);
  instObject.args.push(argObject);
  bb14.append(instObject);
  instObject = new Inst(branchTest32);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_216);
  instObject.args.push(argObject);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  bb14.append(instObject);
  bb15.predecessors.push(bb14);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb15.append(instObject);
  instObject = new Inst(oops);
  bb15.append(instObject);
  bb16.successors.push(new FrequentedBlock(bb18, normal));
  bb16.successors.push(new FrequentedBlock(bb17, normal));
  bb16.predecessors.push(bb14);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rax, GBEMU_ARG_VALUE_UN_1752);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(aboveOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(load8);
  argObject = Arg.createIndex(Reg.rax, Reg.rcx, 1, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_272);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_EIGHT, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_80);
  instObject.args.push(argObject);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_EIGHT, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_SEVEN, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rax, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(aboveOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, GBEMU_BETYSIZE_NUM_UN_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createIndex(Reg.rax, Reg.rcx, GBEMU_BETYSIZE_NUM_8, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(moveConditionallyTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(-1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(GBEMU_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_EIGHT, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_1088);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_272);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_280);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(rshift32);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.zDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb16.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_1088);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_88);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_1176);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rcx, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_80);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rcx, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(aboveOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, GBEMU_BETYSIZE_NUM_UN_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb16.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createIndex(Reg.rax, Reg.rdx, GBEMU_BETYSIZE_NUM_8, 0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(moveConditionallyTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(-1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rax, GBEMU_ARG_VALUE_5);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_23);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_8));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(GBEMU_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_32);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_272);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_280);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(rshift32);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rsi);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1048);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.zDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb16.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1048);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1072);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb16.append(instObject);
  instObject = new Inst(branch64);
  argObject = Arg.createRelCond(below);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  bb16.append(instObject);
  bb17.successors.push(new FrequentedBlock(bb19, normal));
  bb17.predecessors.push(bb16);
  instObject = new Inst(convertInt32ToDouble);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  bb17.append(instObject);
  instObject = new Inst(jump);
  bb17.append(instObject);
  bb18.successors.push(new FrequentedBlock(bb19, normal));
  bb18.predecessors.push(bb16);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb18.append(instObject);
  instObject = new Inst(move64ToDouble);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  bb18.append(instObject);
  instObject = new Inst(jump);
  bb18.append(instObject);
  bb19.successors.push(new FrequentedBlock(bb20, normal));
  bb19.successors.push(new FrequentedBlock(bb32, normal));
  bb19.predecessors.push(bb17);
  bb19.predecessors.push(bb18);
  instObject = new Inst(convertInt32ToDouble);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm1);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(addDouble);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm1);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(moveDoubleTo64);
  argObject = Arg.createTmp(Reg.xmm1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(0, GBEMU_ONE_OF_HEIGHT_VALUE);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1072);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1080);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.zDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb19.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1080);
  instObject.args.push(argObject);
  bb19.append(instObject);
  instObject = new Inst(branchTest32);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1104);
  instObject.args.push(argObject);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  bb19.append(instObject);
  bb20.successors.push(new FrequentedBlock(bb21, normal));
  bb20.successors.push(new FrequentedBlock(bb32, normal));
  bb20.predecessors.push(bb19);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1096);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb20.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.zDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb20.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb20.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1096);
  instObject.args.push(argObject);
  bb20.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1112);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  bb20.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThanOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  bb20.append(instObject);
  bb21.successors.push(new FrequentedBlock(bb23, normal));
  bb21.predecessors.push(bb20);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_344);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  bb21.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.r12, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_502);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb21.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.r12, GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdi);
  instObject.args.push(argObject);
  bb21.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createAddr(Reg.r12, GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r9);
  instObject.args.push(argObject);
  bb21.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(belowOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r9);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ONE_OF_VALUE_65286);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb21.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_232);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r10);
  instObject.args.push(argObject);
  bb21.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_256);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  bb21.append(instObject);
  instObject = new Inst(jump);
  bb21.append(instObject);
  bb22.successors.push(new FrequentedBlock(bb23, normal));
  bb22.predecessors.push(bb30);
  bb22.predecessors.push(bb31);
  bb22.predecessors.push(bb29);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb22.append(instObject);
  instObject = new Inst(jump);
  bb22.append(instObject);
  bb23.successors.push(new FrequentedBlock(bb25, normal));
  bb23.successors.push(new FrequentedBlock(bb24, normal));
  bb23.predecessors.push(bb21);
  bb23.predecessors.push(bb22);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.useZDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb23.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb23.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb23.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1096);
  instObject.args.push(argObject);
  bb23.append(instObject);
  instObject = new Inst(load8);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_ONE_OF_VALUE);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb23.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  bb23.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r12);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.useZDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb23.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(belowOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r9);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ONE_OF_VALUE);
  instObject.args.push(argObject);
  bb23.append(instObject);
  bb24.successors.push(new FrequentedBlock(bb26, normal));
  bb24.successors.push(new FrequentedBlock(bb30, normal));
  bb24.predecessors.push(bb23);
  instObject = new Inst(store8);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_ONE_OF_VALUE);
  instObject.args.push(argObject);
  bb24.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_256);
  instObject.args.push(argObject);
  bb24.append(instObject);
  bb25.successors.push(new FrequentedBlock(bb26, normal));
  bb25.successors.push(new FrequentedBlock(bb30, normal));
  bb25.predecessors.push(bb23);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(equal);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_256);
  instObject.args.push(argObject);
  bb25.append(instObject);
  bb26.successors.push(new FrequentedBlock(bb28, normal));
  bb26.successors.push(new FrequentedBlock(bb27, normal));
  bb26.predecessors.push(bb24);
  bb26.predecessors.push(bb25);
  instObject = new Inst(load8);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_ONE_OF_VALUE_65286);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb26.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(belowOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r9);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ONE_OF_VALUE);
  instObject.args.push(argObject);
  bb26.append(instObject);
  bb27.successors.push(new FrequentedBlock(bb28, normal));
  bb27.predecessors.push(bb26);
  instObject = new Inst(store8);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdi, GBEMU_ONE_OF_VALUE);
  instObject.args.push(argObject);
  bb27.append(instObject);
  instObject = new Inst(jump);
  bb27.append(instObject);
  bb28.successors.push(new FrequentedBlock(bb29, normal));
  bb28.successors.push(new FrequentedBlock(bb31, normal));
  bb28.predecessors.push(bb26);
  bb28.predecessors.push(bb27);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_248);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb28.append(instObject);
  instObject = new Inst(or32);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_4);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb28.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  bb28.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  bb28.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_248);
  instObject.args.push(argObject);
  bb28.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  bb28.append(instObject);
  instObject = new Inst(branchTest64);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r13);
  instObject.args.push(argObject);
  bb28.append(instObject);
  bb29.successors.push(new FrequentedBlock(bb22, normal));
  bb29.successors.push(new FrequentedBlock(bb32, normal));
  bb29.predecessors.push(bb28);
  instObject = new Inst(and32);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb29.append(instObject);
  instObject = new Inst(and32);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_31);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb29.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb29.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_240);
  instObject.args.push(argObject);
  bb29.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThanOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  bb29.append(instObject);
  bb30.successors.push(new FrequentedBlock(bb22, normal));
  bb30.successors.push(new FrequentedBlock(bb32, normal));
  bb30.predecessors.push(bb24);
  bb30.predecessors.push(bb25);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThanOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  bb30.append(instObject);
  bb31.successors.push(new FrequentedBlock(bb22, normal));
  bb31.successors.push(new FrequentedBlock(bb32, normal));
  bb31.predecessors.push(bb28);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThanOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r11);
  instObject.args.push(argObject);
  bb31.append(instObject);
  bb32.successors.push(new FrequentedBlock(bb33, normal));
  bb32.successors.push(new FrequentedBlock(bb34, normal));
  bb32.predecessors.push(bb19);
  bb32.predecessors.push(bb20);
  bb32.predecessors.push(bb30);
  bb32.predecessors.push(bb31);
  bb32.predecessors.push(bb29);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rsi, GBEMU_ARG_VALUE_UN_1120);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb32.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThan);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createImm(0);
  instObject.args.push(argObject);
  bb32.append(instObject);
  bb33.predecessors.push(bb32);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb33.append(instObject);
  instObject = new Inst(oops);
  bb33.append(instObject);
  bb34.successors.push(new FrequentedBlock(bb36, normal));
  bb34.successors.push(new FrequentedBlock(bb35, normal));
  bb34.predecessors.push(bb32);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_136);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb34.append(instObject);
  instObject = new Inst(branch64);
  argObject = Arg.createRelCond(below);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  bb34.append(instObject);
  bb35.successors.push(new FrequentedBlock(bb37, normal));
  bb35.successors.push(new FrequentedBlock(bb38, normal));
  bb35.predecessors.push(bb34);
  instObject = new Inst(convertInt32ToDouble);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  bb35.append(instObject);
  instObject = new Inst(branchDouble);
  argObject = Arg.createDoubleCond(doubleGreaterThanOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  bb35.append(instObject);
  bb36.successors.push(new FrequentedBlock(bb37, normal));
  bb36.successors.push(new FrequentedBlock(bb38, normal));
  bb36.predecessors.push(bb34);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb36.append(instObject);
  instObject = new Inst(move64ToDouble);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  bb36.append(instObject);
  instObject = new Inst(branchDouble);
  argObject = Arg.createDoubleCond(doubleGreaterThanOrEqual);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.xmm0);
  instObject.args.push(argObject);
  bb36.append(instObject);
  bb37.successors.push(new FrequentedBlock(bb38, normal));
  bb37.predecessors.push(bb35);
  bb37.predecessors.push(bb36);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FIVE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb37.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FIVE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb37.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb37.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb37.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  bb37.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  bb37.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb37.append(instObject);
  instObject = new Inst(jump);
  bb37.append(instObject);
  bb38.successors.push(new FrequentedBlock(bb39, normal));
  bb38.successors.push(new FrequentedBlock(bb40, normal));
  bb38.predecessors.push(bb35);
  bb38.predecessors.push(bb37);
  bb38.predecessors.push(bb36);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createRelCond(notEqual);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, 0);
  instObject.args.push(argObject);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_881);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb38.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rdx);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_1824);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createResCond(overflow);
  instObject.args.push(argObject);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.useZDef, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.lateColdUse, GP, GBEMU_BETYSIZE_NUM_32));
  bb38.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_1824);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rdx, GBEMU_ARG_VALUE_UN_1832);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb38.append(instObject);
  instObject = new Inst(branch32);
  argObject = Arg.createRelCond(greaterThan);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb38.append(instObject);
  bb39.successors.push(new FrequentedBlock(bb42, normal));
  bb39.successors.push(new FrequentedBlock(bb3, normal));
  bb39.predecessors.push(bb38);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FIVE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FIVE, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  bb39.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_224);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(or32);
  argObject = Arg.createImm(GBEMU_BETYSIZE_NUM_2);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(add64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_224);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FOUR, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_FOUR, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move32);
  argObject = Arg.createImm(1);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createBigImm(GBEMU_LOWVALUE_KIND_SIX, 1);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createTmp(Reg.rcx);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_8);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_BETYSIZE_NUM_16);
  instObject.args.push(argObject);
  argObject = Arg.createCallArg(GBEMU_ARG_VALUE_24);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r15);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.r14);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.extraEarlyClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.rcx);
  instObject.extraClobberedRegs.add(Reg.rdx);
  instObject.extraClobberedRegs.add(Reg.rsi);
  instObject.extraClobberedRegs.add(Reg.rdi);
  instObject.extraClobberedRegs.add(Reg.r8);
  instObject.extraClobberedRegs.add(Reg.r9);
  instObject.extraClobberedRegs.add(Reg.r10);
  instObject.extraClobberedRegs.add(Reg.r11);
  instObject.extraClobberedRegs.add(Reg.xmm0);
  instObject.extraClobberedRegs.add(Reg.xmm1);
  instObject.extraClobberedRegs.add(Reg.xmm2);
  instObject.extraClobberedRegs.add(Reg.xmm3);
  instObject.extraClobberedRegs.add(Reg.xmm4);
  instObject.extraClobberedRegs.add(Reg.xmm5);
  instObject.extraClobberedRegs.add(Reg.xmm6);
  instObject.extraClobberedRegs.add(Reg.xmm7);
  instObject.extraClobberedRegs.add(Reg.xmm8);
  instObject.extraClobberedRegs.add(Reg.xmm9);
  instObject.extraClobberedRegs.add(Reg.xmm10);
  instObject.extraClobberedRegs.add(Reg.xmm11);
  instObject.extraClobberedRegs.add(Reg.xmm12);
  instObject.extraClobberedRegs.add(Reg.xmm13);
  instObject.extraClobberedRegs.add(Reg.xmm14);
  instObject.extraClobberedRegs.add(Reg.xmm15);
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.def, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_32));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  bb39.append(instObject);
  instObject = new Inst(patch);
  argObject = Arg.createSpecial();
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rbx);
  instObject.args.push(argObject);
  instObject.patchHasNonArgEffects = true;
  instObject.extraEarlyClobberedRegs = new Set();
  instObject.extraClobberedRegs = new Set();
  instObject.patchArgData = new Array();
  instObject.patchArgData.push(new InstDateModel(Arg.use, GP, GBEMU_BETYSIZE_NUM_64));
  instObject.patchArgData.push(new InstDateModel(Arg.coldUse, GP, GBEMU_BETYSIZE_NUM_64));
  bb39.append(instObject);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_224);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  instObject = new Inst(branchTest32);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb39.append(instObject);
  bb40.successors.push(new FrequentedBlock(bb42, normal));
  bb40.successors.push(new FrequentedBlock(bb3, normal));
  bb40.predecessors.push(bb38);
  instObject = new Inst(move);
  argObject = Arg.createAddr(Reg.rbx, GBEMU_ARG_VALUE_224);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb40.append(instObject);
  instObject = new Inst(branchTest32);
  argObject = Arg.createResCond(nonZero);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb40.append(instObject);
  bb41.predecessors.push(bb1);
  bb41.predecessors.push(bb2);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb41.append(instObject);
  instObject = new Inst(ret64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb41.append(instObject);
  bb42.predecessors.push(bb40);
  bb42.predecessors.push(bb39);
  instObject = new Inst(move);
  argObject = Arg.createImm(GBEMU_ARG_VALUE_10);
  instObject.args.push(argObject);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb42.append(instObject);
  instObject = new Inst(ret64);
  argObject = Arg.createTmp(Reg.rax);
  instObject.args.push(argObject);
  bb42.append(instObject);
  return code;
}
